﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Tibet.Entidades;
using Tibet.Logica;
using Tibet.GUI.Presentador;
using Tibet.GUI.Contrato;


namespace Tibet.GUI.Vista
{
    public partial class CrearPerfilReglas : System.Web.UI.Page, IContratoCrearPerfilReglas
    {
        #region Atributos

        private PresentadorCrearPerfilReglas _presentador;

        #endregion  

        #region IContratoCrearPerfilReglas
        public String Nombre
        {
            get
            {
                return txtCrearRegla.Text;
            }
            set
            {
                txtCrearRegla.Text = value;
            }

        }

        public String campo
        {
            get
            {
                return HiddenField1.Value;
            }
            set
            {
                HiddenField1.Value = value;
            }

        }
        public String error
        {
            get
            {
                return Label1.Text;
            }
            set
            {
                Label1.Text = value;
            }

        }

        public TextBox Clase
        {
            get
            {
                return TextBox1;
            }
            set
            {
                TextBox1 = value;
            }

        }

        public DropDownList NombreDeClase
        {
            get
            {
                return NombreClase;
            }
            set
            {
                NombreClase = value;
            }
        }

        public DropDownList BuscarPerfilReglas
        {
            get
            {
                return BuscarPerfilRegla;
            }
            set
            {
                BuscarPerfilRegla = value;
            }
        }

        public DropDownList NombreDeAtributo
        {
            get
            {
                return NombreAtributo;
            }
            set
            {
                NombreAtributo = value;
            }
        }

        public DropDownList NombreDeMetodo
        {
            get
            {
                return NombreMetodo;
            }
            set
            {
                NombreMetodo = value;
            }
        }

        public DropDownList NombreDeInterface
        {
            get
            {
                return NombreInterface;
            }
            set
            {
                NombreInterface = value;
            }
        }

        public DropDownList NombreDePaquete
        {
            get
            {
                return NombrePaquete;
            }
            set
            {
                NombrePaquete = value;
            }
        }

        public CheckBox EspacioDeParentesis
        {
            get
            {
                return EspacioParentesis;
            }
            set
            {
                EspacioParentesis = value;
            }
        }

        public CheckBox PerfilPorDefecto
        {
            get
            {
                return perfilPorDefecto;
            }
            set
            {
                perfilPorDefecto = value;
            }
        }

        public CheckBox EspacioDeOperadores
        {
            get
            {
                return EspacioOperadores;
            }
            set
            {
                EspacioOperadores = value;
            }
        }

        public DropDownList DocumentacionClase
        {
            get
            {
                return DocumentClase;
            }
            set
            {
                DocumentClase = value;
            }
        }

        public DropDownList DocumentacionEstructura
        {
            get
            {
                return DocumentEstructura;
            }
            set
            {
                DocumentEstructura = value;
            }
        }

        public DropDownList DocumentacionMetodo
        {
            get
            {
                return DocumentMetodo;
            }
            set
            {
                DocumentMetodo = value;
            }
        }

        public CheckBox DocumentacionBoilerplate
        {
            get
            {
                return DocumentBoilerplate;
            }
            set
            {
                DocumentBoilerplate = value;
            }
        }

        public CheckBox Llave
        {
            get
            {
                return Llaves;
            }
            set
            {
                Llaves = value;
            }
        }

        public TextBox Atributo 
        { get
            {
                return TextBox2;
            }
            set
            {
               TextBox2 = value;
            }
         }

        public TextBox NMetodo
        {
            get
            {
                return TextBox4;
            }
            set
            {
                TextBox4 = value;
            }
        }

        public TextBox Interfaz
        {
            get
            {
                return TextBox6;
            }
            set
            {
                TextBox6 = value;
            }
        }

        public TextBox Paquete
        {
            get
            {
                return TextBox8;
            }
            set
            {
                TextBox8 = value;
            }
        }

        public TextBox DClase
        {
            get
            {
                return TextBox3;
            }
            set
            {
                TextBox3 = value;
            }
        }

        public TextBox DEstructura
        {
            get
            {
                return TextBox5;
            }
            set
            {
                TextBox5 = value;
            }
        }

        public TextBox DMetodo
        {
            get
            {
                return TextBox7;
            }
            set
            {
                TextBox7 = value;
            }
        }
     
        #endregion

        #region Constructor
        public CrearPerfilReglas()
        {
            _presentador = new PresentadorCrearPerfilReglas(this);
        }
        #endregion

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                //Session["idUsuario"] = Request.QueryString["idUsuario"];
                Session["idUsuario"] = Request.QueryString["1"];
                Panel2.Visible = true;
                Panel3.Visible = false;
                _presentador.Limpiar();
                _presentador.CargarDatos();
                _presentador.llenarBuscarPerfilRegla(); 
                _presentador.visibleTextBox(false);
                _presentador.visibleDropDownlist(true);

                if (Session["ruta"] != null)
                {
                    if ( Session["ruta"].Equals("cambiar"))
                     {
                        String script = @"<script language = ""JavaScript"">" 
                        + "alert ('Perfil creado Exitosamente'); </script>";
                        this.RegisterClientScriptBlock("alerta", script);
                     }
                }
            }

        }
    
        #region Changed
        protected void NombreClase_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void NombreAtributo_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void NombreMetodo_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void NombreInterface_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void NombrePaquete_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void DocumentClase_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void DocumentEstructura_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void DocumentMetodo_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void EspacioParentesis_CheckedChanged(object sender, EventArgs e)
        {

        }

        protected void EspacioOperadores_CheckedChanged(object sender, EventArgs e)
        {

        }

        protected void Llaves_CheckedChanged(object sender, EventArgs e)
        {

        }

        protected void Boilerplate_CheckedChanged(object sender, EventArgs e)
        {

        }
        
        protected void buscarPerfilRegla_SelectedIndexChanged(object sender, EventArgs e)
        {
            Panel2.Visible = false;
            Panel3.Visible = true;
            _presentador.visibleDropDownlist(false);
            _presentador.visibleTextBox(true);
            _presentador.llenarCopiarPerfilRegla(int.Parse(BuscarPerfilRegla.SelectedValue.ToString())
            , BuscarPerfilRegla.SelectedItem.Text);
        }
       
        protected void perfilPorDefecto_CheckedChanged(object sender, EventArgs e)
        {

        } 
        
        protected void TextBox1_TextChanged(object sender, EventArgs e)
        {

        } 

        #endregion

        #region Eventos de botones
        
        /// <summary>
        /// metodo del evento del boton copiar, que permite copiar los valores de un perfil
        /// existente sin modificarle las reglas y cambiandole el nombre del perfil
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void cmdCopiarRegla_Click(object sender, EventArgs e)
        {
            Session["idUsuario"] = Request.QueryString["idUsuario"];
            //_presentador.CopiarPerfilRegla((int)Session["1"]);
            _presentador.CopiarPerfilRegla(1);
            Panel2.Visible = true;
            Panel3.Visible = false;
            _presentador.Limpiar();
            if (campo.Equals("verdad"))
            {
                Session["ruta"] = "cambiar";
            }

            Response.Redirect("CrearPerfilReglas.aspx");

        }    
        
        /// <summary>
        /// metodo del evento del boton crear, que permite asignar las reglas 
        /// y el nombre a un perfil
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void cmdCrearRegla_Click(object sender, EventArgs e)
        {
            Page.Validate("grupoCrearPerfilRegla");

            if (Page.IsValid)
            {
                 //Session["idUsuario"] = Request.QueryString["idUsuario"];
                //_presentador.CrearPerfilDeReglas((int)Session["idUsuario"]);
                _presentador.CrearPerfilDeReglas(1);
                Panel2.Visible = true;
                Panel3.Visible = false;
                _presentador.Limpiar();
            
                if (campo.Equals("verdad"))
                     {              
                         Session["ruta"] = "cambiar";
                     }

                    Response.Redirect("CrearPerfilReglas.aspx");
            }
        }

        #endregion
   
    }
}